# -*- coding: utf-8 -*-
# __author__:heliujiang
# 2022/4/18 14:25


import requests

import config
from common.test_log import create_logger


class Mine:
    _instance = None
    logger = create_logger()
    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

    def __init__(self, host):
        if host == 'dev':
            self.host = config.DEV_URL
        elif host == 'uat':
            self.host = config.UAT_URL
        elif host == 'pro':
            self.host = config.PRO_URL

    def get_mineService_list(self, test_data, token):
        """
          通过HTTP get请求我的服务列表信息。

          参数:
          - test_data: dict, 包含更新操作所需参数的字典，其中包含：
            - seriesCode: str, 车系代码。
            - status: int, 服务状态  0：全部， 1：已拥有 2：已过期。
            - pageNum: int, 页码。
            - pageSize: int, 每页大小。
            - userId: str, 用户ID。
            - modelCode: str, 车型代码。
            - vin: str, 车辆识别码。
          - token: str, 用于API认证的令牌。

          返回:
          - res: requests.Response对象, 表示HTTP POST请求的响应。

          """
        url = self.host + '/appstore/goods/mine/service/list'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_order_list(self, test_data, token):
        """
          通过HTTP get请求我的订单列表信息。

          参数:
          - test_data: dict, 包含更新操作所需参数的字典，其中包含：
            - status: int, 订单状态 0：全部， 1：待支付 3：已支付。
            - pageNum: int, 页码。
            - pageSize: int, 每页大小。
            - userId: str, 用户ID。
            - vin: str, 车辆识别码（可选）
          - token: str, 用于API认证的令牌。

          返回:
          - res: requests.Response对象, 表示HTTP POST请求的响应。

        """
        url = self.host + '/appstore/goods/mine/order/list'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_order_detail(self, test_data, token):
        """
            请求获取订单的详细信息。

            参数:
            - test_data: dict, 包含请求参数的字典，其中包含：
              - id: int, 订单id
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 表示HTTP请求的响应。

        """

        url = self.host + '/appstore/goods/mine/order/detail'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_mineApp_version(self, test_data, token):
        """
            请求获取当前车系下岚图商城应用版本

            参数:
            - test_data: dict, 包含请求参数的字典，其中包含：
              - seriesCode: str, 车系编码
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 表示HTTP请求的响应。

        """

        url = self.host + '/appstore/goods/mine/version'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_mine_integral(self, test_data, token):
        """
            请求获取用户的积分

            参数:
            - test_data: dict, 包含请求参数的字典，其中包含：
              - userId: str, 用户ID
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 表示HTTP请求的响应。

        """

        url = self.host + '/appstore/goods/integral/findByUserId'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_car_freeService(self, test_data, token):
        """
            请求获取车赠送的免费服务

            参数:
            - test_data: dict, 包含请求参数的字典，其中包含：
              - pageNum： int， 页码
              - pageSize： int， 每页大小
              - vin ： str  车辆识别码
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 表示HTTP请求的响应。

        """

        url = self.host + '/appstore/goods/mine/freeService'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_car_flowDetail(self, test_data, token):
        """
            请求获取车流量包明细

            参数:
            - test_data: dict, 包含请求参数的字典，其中包含：
              - pageNum： int， 页码（可选）
              - pageSize： int， 每页大小（可选）
              - vin ： str  车辆识别码
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 表示HTTP请求的响应。

        """

        url = self.host + '/appstore/goods/mine/getFlowDetail'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res
